The invention relates to a processor memory system.
Processor memory systems of this kind are used whenever data is to be stored, processed and transferred. Typical fields of application can be found, for example in mobile radio telephony, in personal digital assistants and in minicomputers. The processor in such systems performs the actual data processing operations. The data required by the processor, usually being constant data such as programs or table data, is stored in the memory or memories. The processor reads such data from the memory when needed.
Various concepts are known in the context of such processor/memory communication or the data or memory management itself. Use is made of cache memories on the one hand and of virtual memories on the other hand. A cache memory is a fast memory in which data that is required frequently and at a high speed is loaded from a main memory. When the processor requests data, it is first checked whether this data is already present in the cache memory. If so, it is read; otherwise the missing data is loaded into the cache memory from the main memory. Such a case is referred to as a cache-miss. In the case of a cache-miss, the processor is held up by the insertion of wait states for the period of time during which the missing data is loaded from the main memory, meaning that the processor does not operate during this time. Such holding up of the processor is longer or shorter in dependence on the magnitude of the missing data set to be loaded.
A virtual memory serves to enable optimum use of a main memory. Such a main memory is, for example a CD-ROM or a hard disk memory. In the case of such a type of memory the processor generates a virtual address which is converted by the virtual memory management so as to obtain the physical address at which the data searched is stored in the main memory, for example, on the hard disk. The virtual address space is then significantly larger than the physical address space; no relationship exists therebetween. When a page fault occurs, however, the processor is not held up in the case of a virtual memory; merely an interrupt instruction which interrupts the program being executed by the processor at that instant is issued. However, the processor itself is still in a position to continue with other programs or operations during the attempted loading of the missing data from, for example, an auxiliary memory. However, such loading of the data is very time consuming and takes a period of time that is a number of times longer than in the case of the cache memory.
Both concepts are not very well suitable whenever integrated programs or data memories in a processor component have to be supplemented with an external memory. Such configurations are encountered, for example in embedded systems whose application imposes different requirements as regards the real-time behavior. Typical applications are mobile radio telephony and the like as described.
Therefore, the problem to be solved by the invention is to provide a processor memory system which enables connection of a memory to a highly integrated processor component while ensuring fast data transfer or fast data processing by the processor on the one hand without affecting the processor operation in the case of a data access failure on the other hand.
In order to solve this problem there is provided a processor memory system which includes:
a processor component provided with a processor and at least a first integrated RAM memory,
at least one second, external memory which is coupled to the processor component via an interface,
a programmable memory management component which is integrated in the processor component and checks, in the case of a data address requested by the processor, whether this data address is stored in the first RAM memory which serves as a fast memory and in which data from the external memory has been loaded in advance,
wherein the memory management component indicates the RAM memory address at which the data associated with the data address is stored if the data is present in the RAM memory, the data then being read from the RAM memory, and
wherein, if the data is not present in the RAM memory, the memory management component outputs an interrupt instruction to the processor which subsequently initiates the loading of the data searched from the external memory to the indicated data address in the RAM memory.
The programmable memory management component provided in accordance with the invention performs a central role in the proposed processor memory system. On the one hand it acts as a cache memory without a specially constructed memory section; a normal RAM memory is now used as an associated memory. The memory management component exhibits such a behavior when the data address is applied thereto by the processor and this component searches and finds this address in the associated memory map. This is because, if it is present, that is, if it is already present in the RAM memory, the memory management component xe2x80x9cbendsxe2x80x9d the address pointer and enables the reading of the data from the relevant memory location in the RAM memory. The memory management component thus behaves in the same way as a customary cache memory.
In the case of a xe2x80x9ccache-missxe2x80x9d, that is, when the data address is not present in the RAM memory, the memory management component acts as a programmable virtual memory and no longer like a cache memory. In the case of detected absence of the searched data address a programmed interrupt instruction is applied to the processor, with the result that merely the current routine is held up. The processor itself remains ready to carry out other activities. Unlike in the case of a normal cache memory, there is no waiting period but only an interrupt which is initiated via the memory management component. The processor then autonomously executes the necessary activities for the loading of the searched data address. In the mean time the memory management component is passive, which means that it does not interfere with the further operation. It is only after the termination of the loading process, that is, when the processor resumes the execution of the routine stopped by the interrupt instruction, that the memory management component is xe2x80x9cresetxe2x80x9d again so that it again behaves in the sense of a cache memory, that is, in as far as the data address subsequently searched is present.
The processor memory system in accordance with the invention in principle enables the execution of programs from an added external memory; the term xe2x80x9cprogramsxe2x80x9d as used in this context is to be understood to include all read data, for example, programs themselves but also table data etc. As a result of the flexibility thus created, the activity of the memory management component, that is the memory management itself, can remain concealed from the application programmer or can also be influenced, if necessary, by the application itself. The system in accordance with the invention offers all advantages of a fast cache memory in combination with the advantages of a virtual memory, that is the execution of other tasks by means of the processor during the loading of data.
Preferably, there is provided a data address register in which the data addresses of the data stored in pages in the RAM memory are stored so as to enable the memory management component to perform a simple check on the requested data address. The data address register is preferably constructed as a 4-page address register. Considering the possibility for the processor to be active in a different sense during the loading in a system in accordance with the invention, it is not necessary to provide a high-volume address register. It suffices when the data register contains only a few page addresses, that is, only a comparatively small number of pages, for example, four pages, are stored in advance in the RAM memory in the sense of a cache memory. Due to the limitation to a few pages, it is advantageously possible to dispense with a conversion table with an entry for each feasible memory page as is necessary in known virtual memories. In order to check the requested data address, it is merely necessary to compare the limited amount of address information of the memory pages present with the requested address, so that overall the comparison can be performed very quickly. The method itself is fully associative.
It is also advantageous to provide a second data address register, in which case first the addresses in the first data register are checked in the context of the address check; in case the searched address is absent, the register address which indicates in which register the check takes place is changed by the processor so that the check can be performed in the second data address register. This makes it advantageously possible to perform on the one hand the search primarily in the first address register, because it is to be assumed that the searched data addresses usually are also found therein. It is only in the case of a miss that quasi a change-over takes place, the memory management component then searching in the second address register which may also be constructed as a 4-page register. This means that a register expansion is thus achieved, without the expanded register having to be completely searched during each search routine. Subsequent to the interrupt instruction, that is, when the address has not been found in the first register, the processor checks whether the address is present in the second register; this means that in this case the processor itself takes over the checking of the address. If this is the case, the memory management component is reprogrammed and subsequently searches the second address register and indicates the address searched and found therein. The foregoing thus constitutes a programmable conversion. This embodiment is not restricted to a second data address register but can be duplicated as many times as desired.
It may also be advantageous for the second or further data address registers not to be provided as registers in the memory management component, but in a RAM memory. In that case the processor programs data address registers present in the memory management component anew instead of switching over to another data address register.
Even though the interrupt routine required for the execution of the interrupt may be stored in the RAM memory that is present anyway, it is advantageous when at least one further memory is integrated in the processor component; in this further memory there is stored an interrupt routine whereto the processor reverts subsequent to the interrupt instruction from the memory management component. The interrupt routine may be conceived in such a manner that it initiates the previously described reprogramming of the data address registers. This further memory may be a ROM memory or a flash memory.
The amount of data that is (preferably page-wise) loaded from the external memory, or the size of the memory sections in the RAM memory, can preferably be changed or adjusted by the programmable memory management component in accordance with the invention. This represents a further advantage of the programmability of the memory management component which behaves quasi as a software-controlled cache, since it enables memory management with a flexible page size; this is simply possible by appropriate programming of the memory management component. This is also possible inter alia because the system in accordance with the invention utilizes, instead of a customary permanently assigned cache memory, a large RAM memory which can be dynamically used for the storage of the necessary data. This is because the subdivision in the RAM memory between data memories, in which data other than the data loaded from the external memory is stored, and the page memory, in which the external memory data is written, is determined only by the application and can be dynamically changed or configured by appropriate programming of the memory management.
It is a further advantage of the flexible memory management in conformity with the invention that arbitrary loading algorithms can be realized by means of the programmable memory management component. This is because the loading, being initiated via the interrupt instruction, can also be flexibly configured by appropriate programming of the memory management component and the loading routine. For example, not only the missing page can be loaded, but also the subsequent pages or the like. Arbitrary loading algorithms are feasible in this respect.
In order to load the data from the external memory, a DMA (Direct Memory Acces) unit is preferably integrated in the processor component. For loading this unit is appropriately programmed by the processor so as to read the missing page (pages) and write these pages into the RAM memory.
The external memory itself may be a parallel flash memory which is coupled to the processor component via a suitable interface. It is advantageous when the external memory is a serial flash memory which is coupled to the processor component via an SPI interface which converts the data to be transferred to the processor component from serial to parallel. The parallel data in its turn is transferred from and to the internal RAM memory by means of the optionally provided DMA unit. The data transfer is thus decoupled as far as possible from other processor activities.